package com.bgs;

/**
 * @Auther: 梁玉杰
 * @Date: 2021/8/3 14:07
 * @Description: TODO
 */
import java.util.Arrays;
import java.util.Random;

public class randomOrder {

/**
 * 随机排序
 */
        public static class ArrayUtils {
            private static Random rand = new Random();

            /*
            1、java.util.Random类中实现的随机算法是伪随机，也就是有规则的随机，所谓有规则的就是在给定种(seed)的区间内随机生成数字；
            2、相同种子数的Random对象，相同次数生成的随机数字是完全相同的；
            3、Random类中各方法生成的随机数字都是均匀分布的，也就是说区间内部的数字生成的几率均等；
            * */

            public static <T> void swap(T[] a, int i, int j) {
                T temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }


            /*
            * Random rand =new Random(25);
            int i;
            i=rand.nextInt(100);
            初始化时25并没有起直接作用（注意：不是没有起作用）,rand.nextInt(100);中的100是随机数的上限,产生的随机数为0-100的整数,不包括100
            * */

            public static <T> void shuffle(T[] arr) {
                int length = arr.length;
                for (int i = length; i > 0; i--) {
                    int randInd = rand.nextInt(i);
                    swap(arr, randInd, i - 1);
                }
            }

            public static void main(String[] args) {
                String[] arr = { "田双丽", "杜明汉", "沈珍美", "姜明君", "常德琴", "萧丽娟", "庞丽娟", "严发祥" };
                shuffle(arr);
                System.out.println(Arrays.toString(arr));
            }
        }



    }



